import { Request, Response } from 'express';
import multer from 'multer';
import path from 'path';

// 配置 Multer 存储
const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        // 指定上传文件存储的目录
        // 确保该目录存在且可写
        cb(null, 'uploads/avatars/'); // 文件将存储在 backend/uploads/avatars 中
    },
    filename: (req, file, cb) => {
        // 定义文件名以防止命名冲突
        // 将当前时间戳附加到原始文件扩展名是一种常见做法
        cb(null, Date.now() + path.extname(file.originalname));
    },
});

// 创建 Multer 实例
const upload = multer({ storage: storage });

// 头像上传的控制器函数
export const uploadAvatar = async (req: Request, res: Response): Promise<void> => {
    // 使用 Multer 中间件处理单个文件上传
    upload.single('avatar')(req, res, (err) => {
        if (err) {
            console.error('File upload error:', err);
            res.status(500).json({ success: false, message: '文件上传失败' });
            return;
        }

        // 如果上传成功，req.file 将包含文件信息
        if (!req.file) {
            res.status(400).json({ success: false, message: '没有选择文件' });
            return;
        }

        // 构建文件 URL（根据需要调整基础 URL）
        const fileUrl = `/uploads/avatars/${req.file.filename}`; // 示例 URL

        res.status(200).json({ success: true, url: fileUrl, message: '文件上传成功' });
        return;
    });
};

// 导出控制器
export default { uploadAvatar }; 